home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 April: Mac OS SDK / Dev.CD Apr 99 SDK1.toast / Development Kits / Interfaces&Libraries / Universal / Interfaces / PInterfaces / PCCardAdapterPlugin.p < prev    next >
Encoding:
Text File  |  1998-08-17  |  9.6 KB  |  279 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        PCCardAdapterPlugin.p
  3.  
  4.      Contains:    PC Card Socket Service Plug-In Programming Interface
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1996-1998 by Apple Computer, Inc. and SystemSoft Corporation. All rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. }
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT PCCardAdapterPlugin;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __PCCARDADAPTERPLUGIN__}
  27. {$SETC __PCCARDADAPTERPLUGIN__ := 1}
  28.  
  29. {$I+}
  30. {$SETC PCCardAdapterPluginIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33. {$IFC UNDEFINED __MACTYPES__}
  34. {$I MacTypes.p}
  35. {$ENDC}
  36. {$IFC UNDEFINED __NAMEREGISTRY__}
  37. {$I NameRegistry.p}
  38. {$ENDC}
  39. {$IFC UNDEFINED __INTERRUPTS__}
  40. {$I Interrupts.p}
  41. {$ENDC}
  42. {$IFC UNDEFINED __PCCARD__}
  43. {$I PCCard.p}
  44. {$ENDC}
  45.  
  46.  
  47. {$PUSH}
  48. {$ALIGN POWER}
  49. {$LibExport+}
  50.  
  51.  
  52. {------------------------------------------------------------------------------------
  53.   Types
  54. ------------------------------------------------------------------------------------}
  55. {     Interrupt Status Change bits }
  56.  
  57.  
  58. CONST
  59.     kSCBatteryDead                = $01;                            {  Battery Dead Status Change }
  60.     kSCBatteryLow                = $02;                            {  Battery Warning Status Change }
  61.     kSCReady                    = $04;                            {  Ready Status Change }
  62.     kSCCardDetect                = $08;                            {  Card Detect Status Change }
  63.     kSCCardEjected                = $10;                            {  Card Ejected }
  64.     kSCStatusChange                = $20;                            {  PC Card Status Change Signal Asserted }
  65.     kSCRingIndicate                = $40;                            {  PC Card Ring Indicate Signal Asserted }
  66.  
  67.  
  68. {    IRQ bits }
  69.     kIRQLevelMask                = $1F;
  70.     kIRQInvalid                    = $20;
  71.     kIRQHigh                    = $40;
  72.     kIRQEnable                    = $80;
  73.  
  74.  
  75. {     bits for adapter characteristics flags }
  76.  
  77.     SS_ADPT_FLG_IND                = $01;                            {  indicators for write-protect, card lock, }
  78.                                                                 {  battery status, busy status, and XIP }
  79.                                                                 {  are shared for all sockets }
  80.     SS_ADPT_FLG_PWR                = $02;                            {  if set indicates that the sockets }
  81.                                                                 {  share the same power control }
  82.     SS_ADPT_FLG_DBW                = $04;                            {  all windows on the adapter must use }
  83.                                                                 {  the same Data Bus Width }
  84.     SS_ADPT_FLG_CARDBUS            = $08;                            {  all sockets are CardBus PC Card capable }
  85.     SS_ADPT_FLG_DMA                = $10;                            {  the adapter has DMA capability }
  86.                                                                 {     bits for adapter power characteristics }
  87.     SS_ADPT_FLG_V33                = $20;                            {  adapter supports 3.3 volt power to socket }
  88.     SS_ADPT_FLG_V50                = $40;                            {  adapter supports 5.0 volt power to socket }
  89.     SS_ADPT_FLG_V12                = $80;                            {  adapter supports 12.0 volt power to socket }
  90.  
  91.  
  92. {------------------------------------------------------------------------------------
  93.   Calls exported by the Family
  94. ------------------------------------------------------------------------------------}
  95. FUNCTION CSReportStatusChange({CONST}VAR adapterRef: RegEntryID; whichSocket: PCCardSocket; statusChange: PCCardSCEvents; socketStatus: PCCardSocketStatus): OSStatus; C;
  96. {------------------------------------------------------------------------------------
  97.   Plugin Dispatch Table
  98. ------------------------------------------------------------------------------------}
  99.  
  100. TYPE
  101. {$IFC TYPED_FUNCTION_POINTERS}
  102.     SSValidateHardwareProc = FUNCTION({CONST}VAR deviceID: RegEntryID): OSStatus; C;
  103. {$ELSEC}
  104.     SSValidateHardwareProc = ProcPtr;
  105. {$ENDC}
  106.  
  107. {$IFC TYPED_FUNCTION_POINTERS}
  108.     SSInitializeProc = FUNCTION({CONST}VAR deviceID: RegEntryID; replacingOldDriver: BOOLEAN): OSStatus; C;
  109. {$ELSEC}
  110.     SSInitializeProc = ProcPtr;
  111. {$ENDC}
  112.  
  113. {$IFC TYPED_FUNCTION_POINTERS}
  114.     SSSuspendProc = FUNCTION({CONST}VAR deviceID: RegEntryID): OSStatus; C;
  115. {$ELSEC}
  116.     SSSuspendProc = ProcPtr;
  117. {$ENDC}
  118.  
  119. {$IFC TYPED_FUNCTION_POINTERS}
  120.     SSResumeProc = FUNCTION({CONST}VAR deviceID: RegEntryID): OSStatus; C;
  121. {$ELSEC}
  122.     SSResumeProc = ProcPtr;
  123. {$ENDC}
  124.  
  125. {$IFC TYPED_FUNCTION_POINTERS}
  126.     SSFinalizeProc = FUNCTION({CONST}VAR deviceID: RegEntryID; beingReplaced: BOOLEAN): OSStatus; C;
  127. {$ELSEC}
  128.     SSFinalizeProc = ProcPtr;
  129. {$ENDC}
  130.  
  131. {$IFC TYPED_FUNCTION_POINTERS}
  132.     SSInquireAdapterProc = FUNCTION(VAR numberOfSockets: ItemCount; VAR numberOfWindows: ItemCount; VAR numberOfBridgeWindow: ItemCount; VAR capabilities: PCCardAdapterCapabilities): OSStatus; C;
  133. {$ELSEC}
  134.     SSInquireAdapterProc = ProcPtr;
  135. {$ENDC}
  136.  
  137. {$IFC TYPED_FUNCTION_POINTERS}
  138.     SSInquireSocketProc = FUNCTION(socket: PCCardSocket; VAR numberOfWindows: ItemCount; VAR supportedSocketStatus: PCCardSocketStatus; VAR supportedStatusChange: PCCardSCEvents): OSStatus; C;
  139. {$ELSEC}
  140.     SSInquireSocketProc = ProcPtr;
  141. {$ENDC}
  142.  
  143. {$IFC TYPED_FUNCTION_POINTERS}
  144.     SSGetSocketProc = FUNCTION(socket: PCCardSocket; VAR Vcc: PCCardVoltage; VAR Vpp: PCCardVoltage; VAR Vs: PCCardVoltage; VAR socketIF: PCCardInterfaceType; VAR customIFID: PCCardCustomInterfaceID; VAR socketStatus: PCCardSocketStatus; VAR SCEventsMask: PCCardSCEvents; VAR IRQ: PCCardIRQ; VAR DMA: PCCardDMA): OSStatus; C;
  145. {$ELSEC}
  146.     SSGetSocketProc = ProcPtr;
  147. {$ENDC}
  148.  
  149. {$IFC TYPED_FUNCTION_POINTERS}
  150.     SSSetSocketProc = FUNCTION(socket: PCCardSocket; Vcc: PCCardVoltage; Vpp: PCCardVoltage; socketIF: PCCardInterfaceType; customIFID: PCCardCustomInterfaceID; statusReset: PCCardSocketStatus; SCEventsMask: PCCardSCEvents; IRQ: PCCardIRQ; DMA: PCCardDMA): OSStatus; C;
  151. {$ELSEC}
  152.     SSSetSocketProc = ProcPtr;
  153. {$ENDC}
  154.  
  155. {$IFC TYPED_FUNCTION_POINTERS}
  156.     SSResetSocketProc = FUNCTION(socket: PCCardSocket): OSStatus; C;
  157. {$ELSEC}
  158.     SSResetSocketProc = ProcPtr;
  159. {$ENDC}
  160.  
  161. {$IFC TYPED_FUNCTION_POINTERS}
  162.     SSGetStatusProc = FUNCTION(socket: PCCardSocket; VAR currentStatus: PCCardSocketStatus; VAR changedStatus: PCCardSocketStatus): OSStatus; C;
  163. {$ELSEC}
  164.     SSGetStatusProc = ProcPtr;
  165. {$ENDC}
  166.  
  167. {$IFC TYPED_FUNCTION_POINTERS}
  168.     SSInquireWindowProc = FUNCTION(VAR socket: PCCardSocket; window: PCCardWindow; VAR windowState: PCCardWindowState; VAR windowSize: PCCardWindowSize; VAR windowAlign: PCCardWindowAlign): OSStatus; C;
  169. {$ELSEC}
  170.     SSInquireWindowProc = ProcPtr;
  171. {$ENDC}
  172.  
  173. {$IFC TYPED_FUNCTION_POINTERS}
  174.     SSGetWindowProc = FUNCTION(VAR socket: PCCardSocket; window: PCCardWindow; VAR windowState: PCCardWindowState; VAR startAddress: PhysicalAddress; VAR windowSize: PCCardWindowSize; VAR windowOffset: PCCardWindowOffset; VAR memSpeed: PCCardAccessSpeed): OSStatus; C;
  175. {$ELSEC}
  176.     SSGetWindowProc = ProcPtr;
  177. {$ENDC}
  178.  
  179. {$IFC TYPED_FUNCTION_POINTERS}
  180.     SSSetWindowProc = FUNCTION(socket: PCCardSocket; window: PCCardWindow; windowState: PCCardWindowState; startAddress: PhysicalAddress; windowSize: PCCardWindowSize; windowOffset: PCCardWindowOffset; memSpeed: PCCardAccessSpeed): OSStatus; C;
  181. {$ELSEC}
  182.     SSSetWindowProc = ProcPtr;
  183. {$ENDC}
  184.  
  185. {$IFC TYPED_FUNCTION_POINTERS}
  186.     SSGetWindowOffsetProc = FUNCTION(VAR socket: PCCardSocket; window: PCCardWindow; VAR windowState: PCCardWindowState; VAR windowOffset: PCCardWindowOffset): OSStatus; C;
  187. {$ELSEC}
  188.     SSGetWindowOffsetProc = ProcPtr;
  189. {$ENDC}
  190.  
  191. {$IFC TYPED_FUNCTION_POINTERS}
  192.     SSSetWindowOffsetProc = FUNCTION(socket: PCCardSocket; window: PCCardWindow; windowState: PCCardWindowState; windowOffset: PCCardWindowOffset): OSStatus; C;
  193. {$ELSEC}
  194.     SSSetWindowOffsetProc = ProcPtr;
  195. {$ENDC}
  196.  
  197. {$IFC TYPED_FUNCTION_POINTERS}
  198.     SSInquireBridgeWindowProc = FUNCTION(VAR socket: PCCardSocket; window: PCCardWindow; VAR windowState: PCCardWindowState; VAR windowSize: PCCardWindowSize; VAR windowAlign: PCCardWindowAlign): OSStatus; C;
  199. {$ELSEC}
  200.     SSInquireBridgeWindowProc = ProcPtr;
  201. {$ENDC}
  202.  
  203. {$IFC TYPED_FUNCTION_POINTERS}
  204.     SSGetBridgeWindowProc = FUNCTION(VAR socket: PCCardSocket; window: PCCardWindow; VAR windowState: PCCardWindowState; VAR startAddress: PhysicalAddress; VAR windowSize: PCCardWindowSize): OSStatus; C;
  205. {$ELSEC}
  206.     SSGetBridgeWindowProc = ProcPtr;
  207. {$ENDC}
  208.  
  209. {$IFC TYPED_FUNCTION_POINTERS}
  210.     SSSetBridgeWindowProc = FUNCTION(socket: PCCardSocket; window: PCCardWindow; windowState: PCCardWindowState; startAddress: PhysicalAddress; windowSize: PCCardWindowSize): OSStatus; C;
  211. {$ELSEC}
  212.     SSSetBridgeWindowProc = ProcPtr;
  213. {$ENDC}
  214.  
  215. {$IFC TYPED_FUNCTION_POINTERS}
  216.     SSGetInterruptSetMemberProc = FUNCTION(socket: PCCardSocket; VAR interruptSetMember: InterruptSetMember): OSStatus; C;
  217. {$ELSEC}
  218.     SSGetInterruptSetMemberProc = ProcPtr;
  219. {$ENDC}
  220.  
  221. {$IFC TYPED_FUNCTION_POINTERS}
  222.     SSEjectCardProc = FUNCTION(socket: PCCardSocket): OSStatus; C;
  223. {$ELSEC}
  224.     SSEjectCardProc = ProcPtr;
  225. {$ENDC}
  226.  
  227.  
  228. CONST
  229.     kServiceTypePCCardAdapter    = 'sock';
  230.     kPCCardAdapterPluginVersion    = $00000001;
  231.     kPCCardAdapterPluginCurrentVersion = $00000001;
  232.  
  233.  
  234. TYPE
  235.     PCCardAdapterPluginHeaderPtr = ^PCCardAdapterPluginHeader;
  236.     PCCardAdapterPluginHeader = RECORD
  237.         version:                UInt32;
  238.         reserved1:                UInt32;
  239.         reserved2:                UInt32;
  240.         reserved3:                UInt32;
  241.     END;
  242.  
  243.     PCCardAdapterPluginDispatchTablePtr = ^PCCardAdapterPluginDispatchTable;
  244.     PCCardAdapterPluginDispatchTable = RECORD
  245.         header:                    PCCardAdapterPluginHeader;
  246.         validateHardware:        SSValidateHardwareProc;
  247.         initialize:                SSInitializeProc;
  248.         suspend:                SSSuspendProc;
  249.         resume:                    SSResumeProc;
  250.         finalize:                SSFinalizeProc;
  251.         inquireAdapter:            SSInquireAdapterProc;
  252.         inquireSocket:            SSInquireSocketProc;
  253.         getSocket:                SSGetSocketProc;
  254.         setSocket:                SSSetSocketProc;
  255.         resetSocket:            SSResetSocketProc;
  256.         getStatus:                SSGetStatusProc;
  257.         inquireWindow:            SSInquireWindowProc;
  258.         getWindow:                SSGetWindowProc;
  259.         setWindow:                SSSetWindowProc;
  260.         getWindowOffset:        SSGetWindowOffsetProc;
  261.         setWindowOffset:        SSSetWindowOffsetProc;
  262.         inquireBridgeWindow:    SSInquireBridgeWindowProc;
  263.         getBridgeWindow:        SSGetBridgeWindowProc;
  264.         setBridgeWindow:        SSSetBridgeWindowProc;
  265.         getInterruptSetMember:    SSGetInterruptSetMemberProc;
  266.         ejectCard:                SSEjectCardProc;
  267.     END;
  268.  
  269. {$ALIGN RESET}
  270. {$POP}
  271.  
  272. {$SETC UsingIncludes := PCCardAdapterPluginIncludes}
  273.  
  274. {$ENDC} {__PCCARDADAPTERPLUGIN__}
  275.  
  276. {$IFC NOT UsingIncludes}
  277.  END.
  278. {$ENDC}
  279.